/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.sapra.abc;

import echopointng.BorderEx;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Locale;
import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.ApplicationInstance;
import nextapp.echo2.app.Border;
import nextapp.echo2.app.Button;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.ContentPane;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.Table;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.filetransfer.Download;
import nextapp.echo2.app.filetransfer.DownloadProvider;
import nextapp.echo2.app.table.DefaultTableModel;
import nextapp.echo2.webcontainer.command.BrowserOpenWindowCommand;
import org.sapra.dao.Archivo;
import org.sapra.dao.Practicante;
import org.sapra.eai.aig.ConvenioPDF;
import org.sapra.echo.Helpers;
import org.sapra.echo.wAviso;

/**
 *
 * @author luiz
 */
public class vArchivo extends ContentPane{
    private Practicante p;
    private List<Archivo> resp = null;
    private List<Practicante> resp1 = null;
    private Button cerrar,descargar, historial, cancelar;
    private Table tableFile=new Table();
    private Table tab_historial;
    private vPracticante vprac;
    private Row row4;

    public vArchivo(Practicante p,vPracticante vprac){
        this.p=p;
        this.vprac=vprac;
        initComponents();
    }

    public void initComponents(){
        Column col=new Column();
        Row l1=Helpers.Row("Row1", new Extent(5), col);
        l1.setAlignment(Alignment.ALIGN_CENTER);
        cerrar=Helpers.Button("CERRAR",l1,null);
        descargar=new Button("Descargar");
        l1.add(cerrar);

        //l1.add(descargar);

        Row l2=new Row();
        l2.add(tableFile);

        col.add(l1);
        col.add(l2);
        add(col);

        tableFile.setStyleName("Default");
        tableFile.setHeaderVisible(true);
        tableFile.setBorder(BorderEx.DEFAULT);
        tableFile.setBackground(Color.WHITE);
        tableFile.setSelectionEnabled(true);
        tableFile.setSelectionBackground(Color.BLUE);
        tableFile.setRolloverBackground(Color.YELLOW);
        tableFile.setRolloverEnabled(true);
        tableFile.setRolloverForeground(Color.BLUE);
        tableFile.setSelectionForeground(Color.WHITE);
        tableFile.setBorder(new Border(new Extent(5), Color.BLUE, 3));
        tableFile.setWidth(new Extent(800));

        Row row3=Helpers.Row("Row1", new Extent(5), col);
        historial=Helpers.Button("VER HISTORIAL", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {verHistorial(e);}});
        cancelar=Helpers.Button("CANCELAR", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {cancelar(e);}});

        row4=Helpers.Row("Row1", new Extent(5), col);
        tab_historial=Helpers.Tabla();
        row4.add(tab_historial);

        row4.setEnabled(false);
        row4.setVisible(false);

        UpdateView();
        accion();

    }
    public void UpdateView(){
        resp=dArchivo.getArchivo(p.getPracticanteId());
        resp1=dPracticante.getConvenios(p.getNombre(), p.getPaterno(), p.getMaterno(), p.getFec_nacimiento().toString());
        tableFile.setModel(modeloTabla());
        tableFile.setDefaultRenderer(Object.class, new TableCell());
        tableFile.setDefaultHeaderRenderer(new HeaderTable());

        tab_historial.setModel(modeloTabla2());
        tab_historial.setDefaultRenderer(Object.class, new TableCell());
        tab_historial.setDefaultHeaderRenderer(new HeaderTable());

    }
    private String[] title={"Nombre","Descripcion","Extension"};
    public DefaultTableModel modeloTabla(){
        DefaultTableModel dtm=new DefaultTableModel(3,0);
        for(int i=0;i<title.length;i++){
            dtm.setColumnName(i,title[i]);
        }


        for(int i=0;i<resp.size();i++){
                Archivo file=(Archivo)resp.get(i);
                Object[] obj=new Object[3];
                obj[0]=""+file.getNombre();
                obj[1]=""+file.getDescripcion();
                obj[2]=""+file.getExtension();

                dtm.addRow(obj);
        }
        return dtm;
    }
    public void accion(){
        cerrar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
               vprac.ContenedorPrincipal();
            }
        });
        tableFile.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                int num=tableFile.getSelectionModel().getMinSelectedIndex();
                String pdfDirectorio="C:/Users/develop/Documents/DocsSapra/Poliza/";
                System.out.println(""+num);
                if(num>=0){
                    Archivo a=(Archivo)resp.get(num);
                    if(a.getRuta().trim().toLowerCase().startsWith("http://pee.topsoluciones.com.mx")){
                           StringBuilder sb = new StringBuilder()
                            .append("width=640")
                            .append(",height=480")
                            .append(",resizable=yes")
                            .append(",scrollbars=yes");
                           ApplicationInstance app = ApplicationInstance.getActive();
                           app.getActive().enqueueCommand(new BrowserOpenWindowCommand(a.getRuta(),"Archivos",sb.toString()));
                    }
                    String ruta="servletConvenio";
                    if(a.getRuta().trim().startsWith(ruta.trim())){
                        try {
                            String strFile="C:/Users/develop/Documents/DocsSapra/Poliza/polizaaccidente"+a.getFk_ligapracticanteId()+".pdf";
                            File f=null;
                            try {
                                   
                                         ConvenioPDF con=new ConvenioPDF(a.getFk_ligapracticanteId(), 0);
                                         f=new File(strFile);

                            } catch (Exception exc2) {

                            }

                           
                            final byte[] content = new byte[(int) f.length()];
                            FileInputStream inputStream = new FileInputStream(f);
                            inputStream.read(content);
                            inputStream.close();
                            final String fname=f.getName();
                            Download archivo=new Download();
                            archivo.setProvider(new DownloadProvider() {

                                public String getContentType() {
                                            return ".PDF";
                                        }

                                        public String getFileName() {
                                            SimpleDateFormat format = new SimpleDateFormat("yyyy-MMM-dd",new Locale("es"));
                                            return ""+p.getPracticanteId()+"_"+p.getNombre()+"_"+p.getPaterno()+"_"+p.getMaterno()+"_"+format.format(p.getFec_inicioContrato())+".pdf";
                                        }

                                        public int getSize() {
                                            return 0;
                                        }

                                        public void writeFile(OutputStream out) throws IOException {
                                            out.write(content);
                                        }
                                    });
                           archivo.setActive(true);
                           ApplicationInstance app = ApplicationInstance.getActive();
                           app.getActive().enqueueCommand(archivo);
                        } catch (Exception exc) {
                        }

                    }
                }else{
                    add(new wAviso("ERROR","Favor de Seleccionar Un Archivo"));
                    return;
                }

            }
        });


       //descargar los convenios del historial
        tab_historial.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                Practicante prc=new Practicante();
             for(int i=0;i<resp1.size();i++){
                     prc=(Practicante)resp1.get(i);}
                     int ps=prc.getPracticanteId();
                List <Archivo> ar=dArchivo.getArchivo(prc.getPracticanteId());
                Archivo arc=new Archivo();

                for(int i=0;i<ar.size();i++){
                     arc=(Archivo)ar.get(i);//}


                int num=arc.getArchivoId();
                
                System.out.println(""+num+""+ps+arc.toString());
                if(num>=0){
                    //Archivo a=(Archivo)ar.get(num);
                    String rr="";
                    rr=arc.getRuta().trim();
                    System.out.println(rr);
                    if(arc.getRuta().trim().toLowerCase().startsWith("http://pee.topsoluciones.com.mx")){
                           StringBuilder sb = new StringBuilder()
                            .append("width=640")
                            .append(",height=480")
                            .append(",resizable=yes")
                            .append(",scrollbars=yes");
                           ApplicationInstance app = ApplicationInstance.getActive();
                           app.getActive().enqueueCommand(new BrowserOpenWindowCommand(arc.getRuta(),"Archivos",sb.toString()));
                    }
                }
                    String ruta="servletConvenio";
                    String rrr=arc.getRuta().trim();
                    System.out.println(rrr);
                    if(arc.getRuta().trim().startsWith(ruta.trim())){
                        try {
                            String strFile="C:/Users/develop/Documents/DocsSapra/Poliza/polizaaccidente"+arc.getFk_ligapracticanteId()+".pdf";
                            File f=null;
                            try {

                                         ConvenioPDF con=new ConvenioPDF(arc.getFk_ligapracticanteId(), 0);
                                         f=new File(strFile);

                            } catch (Exception exc2) {

                            }


                            final byte[] content = new byte[(int) f.length()];
                            FileInputStream inputStream = new FileInputStream(f);
                            inputStream.read(content);
                            inputStream.close();
                            final String fname=f.getName();
                            Download archivo=new Download();
                            archivo.setProvider(new DownloadProvider() {

                                public String getContentType() {
                                            return ".PDF";
                                        }

                                        public String getFileName() {
                                            SimpleDateFormat format = new SimpleDateFormat("yyyy-MMM-dd",new Locale("es"));
                                            return ""+p.getPracticanteId()+"_"+p.getNombre()+"_"+p.getPaterno()+"_"+p.getMaterno()+"_"+format.format(p.getFec_inicioContrato())+".pdf";
                                        }

                                        public int getSize() {
                                            return 0;
                                        }

                                        public void writeFile(OutputStream out) throws IOException {
                                            out.write(content);
                                        }
                                    });
                           archivo.setActive(true);
                           ApplicationInstance app = ApplicationInstance.getActive();
                           app.getActive().enqueueCommand(archivo);
                        } catch (Exception exc) {
                        }
                }else{
                    //add(new wAviso("ERROR","Favor de Seleccionar Un Archivo"));
                    return;
                }

        }
        }
        });
    }

    ///INICIALIZAR LA TABLA DEL HISTORIAL
    private String[] title2={"convenio","fecha de creacion","fecha de termnio","fecha de cancelacion"};
    public DefaultTableModel modeloTabla2(){
        SimpleDateFormat spd=new SimpleDateFormat("yyyy-MM-dd");
        DefaultTableModel dtm=new DefaultTableModel(4,0);
        for(int i=0;i<title2.length;i++){
            dtm.setColumnName(i,title2[i]);
        }


        for(int i=0;i<resp1.size();i++){
                Practicante prc=(Practicante)resp1.get(i);
                Object[] obj=new Object[4];
                obj[0]=""+prc.getPracticanteId();
                obj[1]=""+prc.getFec_inicioContrato();
                obj[2]=""+prc.getFec_terminoContrato();
                 if(p.getFec_cancelacion()==null || p.getFec_cancelacion().equals(""))
                        obj[3]="N/D";
                    else
                        obj[3]=spd.format(p.getFec_cancelacion());
                dtm.addRow(obj);
        }
        return dtm;
    }

    public void verHistorial(ActionEvent e){
        row4.setEnabled(true);
        row4.setVisible(true);

    }

    public void cancelar(ActionEvent e){
        row4.setEnabled(false);
        row4.setVisible(false);
    }


}
